#include "Nivel.h"
#include "./Objetos/Dinamicos/Huevo.h"
#include "./Objetos/Estaticos/Caja.h"
#include "./Objetos/Estaticos/Piso.h"
#include "./Objetos/Estaticos/Fondo.h"
#include "./Objetos/Estaticos/Nido.h"
#include "../common/ParserXML.h"
#include <typeinfo>
#include <string>

Nivel::Nivel() { }

Nivel::Nivel(std::string archivo, short cantidadDeJugadores)
{
	cantidadMonticulos = cantidadDeJugadores;
	cantidadCatapultas = cantidadDeJugadores;
	cantidadCerdos = cantidadDeJugadores;
	ParserXML::hidratarNivel(this, archivo);
}

Nivel::~Nivel()
{
	
}

std::vector<Objeto*> Nivel::getObjetos() {
	return objetos;
}

std::vector<Cerdo*> Nivel::getCerdos() {
	return cerdos;
}

std::vector<Catapulta*> Nivel::getCatapultas() {
	return catapultas;
}

void Nivel::agregarObjeto(Objeto* o) {
	if (o != NULL)
		objetos.push_back(o);
}

void Nivel::agregarMonticulo(Monticulo* mon){

	if (mon != NULL && cantidadMonticulos > 0) {
		monticulos.push_back(mon);
		objetos.push_back(mon);
		cantidadMonticulos--;
	}
}

void Nivel::agregarCerdo(Cerdo *c) {
	if (c != NULL && cantidadCerdos > 0) {
		cerdos.push_back(c);
		objetos.push_back(c);
		cantidadCerdos--;
	}
}

void Nivel::agregarCatapulta(Catapulta* cata) {
	if (cata != NULL && cantidadCatapultas > 0) {
		catapultas.push_back(cata);
		objetos.push_back(cata);
		cantidadCatapultas--;
	}
}
